import datetime
import random

from flask import Flask,session
from flask_sqlalchemy import SQLAlchemy
from redis import Redis
from flask_session import Session
from flask_script import Manager
from flask_migrate import Migrate,MigrateCommand
from info import create_app

#创建应用
app = create_app("dev")

#创建管理器
mgr = Manager(app)

#使用管理器生成迁移器
mgr.add_command("mc",MigrateCommand)

#添加管理员账号
# @mgr.command/将无参函数转为命令
@mgr.option("-u",dest="username")    #/有参函数转为函数命令
@mgr.option("-p",dest="password")
def create_superuser(username,password):
    if not all([username,password]):
        app.logger.error("添加管理员失败，参数不足")
        return
    from info.utils.models import User
    from info import db
    #添加管理员用户
    user = User()
    user.mobile=username
    user.password=password
    user.nick_name=username
    user.is_admin=True  #设置管理员参数

    db.session.add(user)
    try:
        db.session.commit()
    except BaseException as e:
        #包装进日记做记录
        app.logger.error("添加管理员失败：%s"% e)
        db.session.rollback()
        return
    #打印
    app.logger.info("添加管理员成功")


#添加测试数据
@mgr.command
def add_test_users():
    """添加测试用户"""

    from info import db
    from info.utils.models import User
    #用户添加列表
    users = []
    now = datetime.datetime.now()
    #添加1w人
    for num in range(0, 10000):
        try:
            user = User()
            user.nick_name = "%011d" % num
            user.mobile = "%011d" % num
            user.password_hash = "pbkdf2:sha256:50000$SgZPAbEj$a253b9220b7a916e03bf27119d401c48ff4a1c81d7e00644e0aaf6f3a8c55829"
            #timedelta时间间隔对象
            user.create_time = now - datetime.timedelta(seconds=random.randint(0, 2678400))
            users.append(user)
            print(user.mobile)
        except Exception as e:
            print(e)
    db.session.add_all(users)
    db.session.commit()
    print('OK')

if __name__ == '__main__':
    mgr.run()
